<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件
# 封装加密函数
if(!function_exists("jiami_password")){
    function jiami_password($password){
        $salt = "djoemaoijnc313j#$%#";
        return md5($salt . md5($password));
    }
}
# 封装截取电话号码
if(!function_exists("exists_phone")){
    function exists_phone($phone){
        return substr($phone, 0,3) . "****" . substr($phone, 8,11);
    }
}
if (!function_exists('get_cate_list')) {
    //递归函数 实现无限级分类列表
    function get_cate_list($list,$pid=0,$level=0) {
        static $tree = array();
        foreach($list as $row) {
            if($row['pid']==$pid) {
                $row['level'] = $level;
                $tree[] = $row;
                get_cate_list($list, $row['id'], $level + 1);
            }
        }
        return $tree;
    }
}

if(!function_exists('get_tree_list')){
    //引用方式实现 父子级树状结构
    function get_tree_list($list){
        //将每条数据中的id值作为其下标
        $temp = [];
        foreach($list as $v){
            $v['son'] = [];
            $temp[$v['id']] = $v;
        }
        //获取分类树
        foreach($temp as $k=>$v){
            $temp[$v['pid']]['son'][] = &$temp[$v['id']];
        }
        return isset($temp[0]['son']) ? $temp[0]['son'] : [];
    }
}

if (!function_exists('remove_xss')) {
    //使用htmlpurifier防范xss攻击
    function remove_xss($string){
        //composer安装的，不需要此步骤。相对index.php入口文件，引入HTMLPurifier.auto.php核心文件
//         require_once './plugins/htmlpurifier/HTMLPurifier.auto.php';
        // 生成配置对象
        $cfg = HTMLPurifier_Config::createDefault();
        // 以下就是配置：
        $cfg -> set('Core.Encoding', 'UTF-8');
        // 设置允许使用的HTML标签
        $cfg -> set('HTML.Allowed','div,b,strong,i,em,a[href|title],ul,ol,li,br,p[style],span[style],img[width|height|alt|src]');
        // 设置允许出现的CSS样式属性
        $cfg -> set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align');
        // 设置a标签上是否允许使用target="_blank"
        $cfg -> set('HTML.TargetBlank', TRUE);
        // 使用配置生成过滤用的对象
        $obj = new HTMLPurifier($cfg);
        // 过滤字符串
        return $obj -> purify($string);
    }
}
// if(!function_exists('curl_request')){
//     //使用curl函数库 发送请求
//     function curl_request($url, $post=false, $params=[], $https=false){
//         //初始化请求会话
//         $ch = curl_init($url);
//         //设置请求选项
//         //请求方式 默认curl发送get请求
//         if($post){
//             //设置发送post请求
//             curl_setopt($ch, CURLOPT_POST, true);
//             //设置post请求参数
//             curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//         }
//         //https协议是否验证证书
//         if($https){
//             //禁止从服务器端验证客户端本地的整数
//             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//         }
//         //发送请求
//         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//         $res = curl_exec($ch);
//         if($res === false){
//             $msg = curl_error($ch);
//             return [$msg];
//         }
//         //关闭请求
//         curl_close($ch);
//         return $res;
//     }
// }
if(!function_exists("curl_request")){
    function curl_request($url,$post = false , $params=[],$https=false){
        # 开启curl会话
        $ch = curl_init($url);
        # 判断他是不是post请求 为true就是post请求，如果为false就是get请求
        if($post){
            curl_setopt($ch,CURLOPT_POST,true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        }
        # 判断他是不是https请求
        if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        # 执行会话
        $res = curl_exec($ch);
        if($res === false){
            $msg = curl_error($ch);
            return [$msg];
        }
        # 关闭会话
        curl_close($ch);
        return $res;
    }
}
if(!function_exists("exists_sendcode")){
    function exists_sendcode($phone,$msg){
        $url = config("duanxin.url");
        $appkey = config("duanxin.appkey");
        # https://way.jd.com/chuangxin/dxjk?mobile=13568813957&content=【创信】你的验证码是：5873，3分钟内有效！&appkey=您申请的APPKEY
        $url .= "?mobile=" . $phone . "&content=" . $msg . "&appkey=" . $appkey;
        # 发送请求
        $ret = curl_request($url,false,[],true);
        # 判断他是否返回一个数据，如果是一个数组就是错误的
        // dump($ret);die;
        if(is_array($ret)){
            // dump($ret);
            return "请求失败";
        }
        # 判断他是否发送成功
        $arr = json_decode($ret,true);
        if(!isset($arr["code"]) || $arr["code"] != 10000){
            return "短信接口请求失败";
        }
        if(!isset($arr["result"]["ReturnStatus"]) || $arr["result"]["ReturnStatus"] != "Success"){
            return "短信发送失败";
        }
        return true;
    }
}